// file system 文件模块，用于文件的增删改查

const fs = require("fs");
const path = require("path")

// 1. 读取文件内容
// 三个参数(路径，"utf-8", 错误优先的回调函数)
// 异步方法
// fs.readFile("./02-utils.js", "utf-8", (err, data) => {
//   if (err) throw err;
//   console.log(data);
// })

// 对应的同步方法
// try {
//   const data = fs.readFileSync("./02-utils.js", "utf-8");
//   console.log(data);
//   console.log(123);
// } catch (error) {
//   throw error;
// }



// 2. 新增文件
// fs.writeFile(path.resolve(__dirname, "./a.txt"), "hello world", (err) => {
//   if (err) throw err;
//   console.log("文件写入成功");
// })


// const syncReadFile = (url) => {
//   return new Promise((resolve, reject) => {
//     fs.readFile(url, "utf-8", (err, data) => {
//       if (err) reject(err);
//       resolve(data);
//     })
//   })
// }

// const syncWriteFile = (data) => {
//   return new Promise((resolve, reject) => {
//     fs.writeFile(path.resolve(__dirname, "./a.js"), data, (err) => {
//       if (err) reject(err);
//       resolve("文件写入成功");
//     })
//   })
// }

// const copyFile = async () => {
//   const data = await syncReadFile("./02-utils.js");
//   const result = await syncWriteFile(data);
//   console.log(result);  
// }
// copyFile()



// 3. 移动或者重命名文件
// fs.rename("./b.js", "../b.js", (err) => {
//   if (err) throw err;
//   console.log("重命名成功");
// })



// 4. 删除文件
// fs.unlink("./b.js", (err) => {
//   if (err) throw err;
//   console.log("删除成功");
// })


// 5. 新建文件夹
// fs.mkdir("./newFile", (err) => {
//   if (err) throw err;
//   console.log("新增文件夹成功");
// })


// 6. 读取文件夹信息
// fs.readdir("./classit231", (err, data) => {
//   if (err) throw err;
//   console.log(data);
// })


// 7. 删除文件夹
// {recursive: true}可选，表示递归删除
// 默认只能删除空文件夹
// fs.rmdir("./newFile", {recursive: true}, (err) => {
//   if (err) throw err;
//   console.log("删除成功");
// })